Les réseaux WiFi font partie de notre quotidien. Ils permettent l’échange de données sans fil sur un réseau informatique. Qu’ils soient utilisés à des fins privées ou professionnelles, il est indispensable de les sécuriser pour protéger l’accès au réseau et la confidentialité des données transmises. Dans cette série de posts, j'aimerai vous parler de sécurité Wifi, les débuts, les défis, les propositions, les enjeux et son évolution jusqu'à maintenant.

Généralité sur la Sécurité Wifi

Critères de sécurité

La sécurité et la robustesse d'un réseau WiFi et du matériel supportant cette technologie dépendent en général de ces quelques points :

  • De l’accessibilité du réseau, c’est à dire de la portée des signaux électromagnétiques qui propagent le signal Wi-Fi ;
  • Des mécanismes d’authentification utilisés afin d’identifier les utilisateurs du réseau de manière univoque et sûre ;
  • Des mécanismes cryptographiques mis en oeuvre afin de protéger les communications ;
  • Des mécanismes d’administration et de supervision des points d’accès du réseau et des terminaux utilisant ce réseau ;
  • d’autres éléments de configuration des points d’accès WiFi.

En principe, un réseau WiFi doit au moins vérifier les critères de sécurité de base de tout système informatique, ces critères sont connus sous le nom de modèle CIA (Confidentiality Integrity Availability). Le CIA signifie tout simplement qu’une donnée ne doit pas être vue (Confidentialité), modifiée (Intégrité) et interceptée ou stoppée (disponibilité) par une entité non autorisée.

Principes de bases

Processus de connexion à en un réseau

Les différents systèmes de sécurité que nous verrons interviennent pendant des étapes précises du processus de connexion à un réseau. Nous pouvons diviser ce processus en différentes étapes : la détection, l’authentification, l’association et la réassociation.

  • Détection : Grâce aux trames balises (contenant des informations sur le point d’accès, en particulier le BSSID qui est l’adresse physique du point d'accès et le SSID qui est le nom du réseau), les stations environnantes détectent le point d'accès, il est alors possible de sélectionner le réseau directement dans la liste des réseaux détectés par la station.
  • Authentification : Après la détection des différents APs (Access Points), la station se connecte à l’un deux, commence alors l’étape d’authentification. La station s’identifie au près du point d'accès et vice versa. Dans le cas où aucune sécurité n’est mise en place aucune authentification n’a lieu. Et certains protocoles obligent juste la station à s’identifier au près du point d'accès mais pas l’inverse (un peu comme un contrôle de Police 👮‍♀️), cela constitue une faille de sécurité (j'y viendrai).
  • Association : Lorsque la station a été identifiée et que l’AP a envoyé une réponse d’authentification positive, elle peut alors s’associer à cet AP pour avoir accès aux services du réseau. La requête d’association envoyée à l’AP par la station contient entre autres la liste des débits que la station est capable de gérer.
  • Réassociation : Malgré son association avec un AP, la station vérifie régulièrement la présence d’autres AP ayant le même SSID, elle s’associe à cet AP s’il est plus intéressant (plus proche ou plus disponible). La station envoie d’abord une requête de dés- association à de l’AP actuel suivie d’une requête de réassociation auprès du nouvel AP. Cette fonction s’appelle le hand over.

Chiffrement de données

Le chiffrement consiste à transformer une donnée (texte, message, ...) afin de la rendre incompréhensible par une personne autre que celle qui a créé le message et celle qui en est le destinataire (la fonction permettant de retrouver le texte clair à partir du texte chiffré est le déchiffrement 🤗) .

  • Chiffrement symétrique : Il est basé sur des fonctions mathématiques réversibles. Le chiffrement symétrique repose sur un principe de clé unique pour chiffrer et déchiffrer. On parle aussi de chiffrement conventionnel puisque c’est le premier chiffrement par clé à avoir été utilisé.
  • Chiffrement asymétrique : Celui-ci utilise deux clés : une clé publique et une clé privée. La clé publique est utilisée pour chiffrer et la clé privée est utilisée pour déchiffrer. Ainsi si un individu A veut envoyer un message à un individu B, il chiffre le message avec la clé publique de B, qui à son tour déchiffre ce message reçu avec sa clé privée.


Sécurité Wifi : Les débuts

Les premières solutions étaient très simples et très rudimentaires, elles s’appuient sur des fonctionnalités de base des points d’accès, voyons un peu cela.

Pourquoi pas limiter la couverture radio pour empêcher les autres de se connecter ?

En théorie le réseau ne sera pas visible à l’extérieur du champ de couverture. En pratique , le résultat en est tout autre car le signal WiFi circule à dans les airs, il est donc impossible de les contrôler (bah Oui 😅!). Il existe des appareils très puissants de nos jours, capables de détecter le réseau même si le signal est faible. En plus cette technique n’est pas sans conséquence sur les performances du réseau.

Toujours dans la même optique, rappelez-vous, j'avais dit qu’une des étapes de connexion à un réseau consistait à la détection des différents points d'accès. Que se passe t-il si le point d’accès n’envoie pas de trames balises ? En principe, les stations ne pourront pas détecter le réseau. Malheureusement cette technique aussi à une faille 😬, en effet il suffit d’avoir un logiciel pour écouter tout le trafic réseau des autres stations de la zone pour retrouver le BSSID.

Pourquoi pas garder une liste des utilisateurs autorisés sur le Point d'accès ?

Nous avions vu que l’un des critères principaux de sécurité était l’authentification, tous les équipements réseaux ont une interface et chaque interface a un identifiant unique (attribué par le constructeur, c'est l'Adresse physique ou l'adresse MAC). Le filtrage MAC consiste donc à identifier non pas les utilisateurs mais les appareils qu’ils utilisent à travers leurs adresses MAC. Il faut aussi noter que l’adresse MAC est présente dans tous les paquets émis par une station donc dans ceux de l’authentification.

Malheureusement, encore 🤦, il est maintenant très facile de changer l'adresse MAC de la carte WiFi (niveau logiciel), et il suffit d’écouter le trafic réseau et de trouver une adresse MAC autorisée et l’usurper. En plus pour un réseau comportant un nombre variable d’utilisateurs, le filtrage MAC devient trop encombrant 😓.

Cette technique semble fonctionner et elle est généralement utilisée comme complément aux autres techniques de sécurité plus robustes que je détaillerai dans la suite.



Wired Equivalent Protection ou WEP (un pionnier de sa catégorie)

Il fait partie de la norme IEEE 802.11 ratifiée en septembre 1999. Il prétendait comme son nom l’indique, offrir une solution de confidentialité équivalente à un réseau filaire.

Je détaillerai les entités cryptographiques, les points forts, les faiblesses et quelques attaques connues du protocole.

Présentation et Principe

Le WEP amenait avec lui une nouvelle conception de la sécurité réseau sans fil. Comme tous les autres protocoles qui vont suivre, j'essayerai de les présenter sous trois angles : Authentification, Confidentialité et Intégrité.

  • Authentification : Système ouvert et clés partagées.
  • Confidentialité : Chiffrement WEP avec RC4.
  • Intégrité : Calcul de l'ICV avec CRC.

Fonctionnement du chiffrement WEP

Le chiffrement WEP utilise un algorithme de cryptage à clé symétrique. Avant de parler du principe même de fonctionnement de l’algorithme, j'aimerai toucher à quelques termes qui interviendront dans la suite.

  • Clés WEP : Il s’agit de clés partagées entre les différents APs et stations du réseau. Chacune d’elle est introduite manuellement dans chaque station. Une clé WEP a une longueur de 40 ou 104 bits selon les cas.
  • IV (Initialisation Vector) ou vecteur d’initialisation est une séquence de 24 bits, soit 16777216 possibilités, qui change régulièrement. Combiné à la clé statique, il introduit une notion aléatoire au chiffrement. Ainsi, deux messages identiques ne donneront pas le même contenu chiffré (du moins...en théorie 🤷🏽‍♂️). Par contre l’IV doit être connu de l’émetteur et du récepteur, ce qui fait qu’il doit circuler en clair sur le réseau.
  • RC4 (Ron’s Code 4 ou Rivest Cipher 4) : L’algorithme RC4 a été créée par Ron Rivest qui est aussi l’un des inventeurs du fameux RSA. Le principe du RC4 est simple, il n’est pas lui même utilisé pour chiffrer le message, mais pour générer un tableau de bits pseudo aléatoires. Pour générer ce tableau, il utilise un point d’entrée qui est la clé RC4 ou graine. Cette clé est la concaténation de l’IV et de la clé WEP.
  • ICV (Integrity Check Value) : C'est le CRC (Contrôle de Redondance Cyclique) qui est utilisé pour le calcul de l’ICV. Le CRC à une longueur de 32 bits et il est calculé en fonction du contenu du paquet et en constitue une sorte de résumé. Si le paquet est intercepté par un pirate, il peut le modifier et recalculer le CRC avant de laisser ce paquet poursuivre son chemin. Et malheureusement le destinataire du paquet ne se rendra pas compte du changement puisque le CRC est correct. Cela est compréhensible si l’on sait qu’à la base le CRC est destiné à détecter les erreurs de transmissions pas pour lutter contre les pirates. Ce problème est resolu en calculant l’ICV à partir du message en clair puis insérer à la fin de celui ci et le tout est crypté par l’algorithme de chiffrement qui sera décrit prochainement.


Comme indiqué précédemment, le chiffrement WEP est basé sur RC4 avec une clé sécrète K de 40 bits ou 104 bits combinée à un IV de 24 bits afin de chiffrer un message M et sa somme de contrôle (checksum) - l’ICV.

Processus de Chiffrement WEP

Processus de Chiffrement WEP


Deux informations sont détenues en clair dans la trame : le Key ID ou identifiant de la clé et l’IV qui est le vecteur d’initialisation. La clé RC4 est obtenue en concaténant la clé WEP indiquée  avec l’IV; en appliquant l’algorithme RC4 avec cette clé : nous obtenons le Key Stream. Il ne reste plus qu’à appliquer le XOR entre le message crypté et le Key Stream.

Processus de déchiffrement WEP

Processus de déchiffrement WEP


Vulnérabilités, Attaques

Le WEP a été sujet à plusieurs vulnérabilités et attaques au fil du temps mais sans aucune amélioration majeure.

Alors j'ai recensé pour vous une liste de vulnérabilités et j'ai effectué des tests pour chacun des cas et j'y viens justement !

Attaque contre l'ICV du WEP

Comme je l'avais dit au début, le principal souci avec le protocole réside dans son algorithme de cryptage, plus précisément dans son IV (Initialisation Vector). Le principe de cette attaque est très simple, on récupère un paquet handshake entre l'AP et une station pendant une authentification et on attend que l'AP utilise le même vecteur d'initialisation. Le temps d'attente est inversement proportionnel au trafic du réseau. J'aimerai pousser ces arguments encore plus loin, dans un document que j'avais lu, il est dit qu'il fallait seulement 5000 IVs générés pour avoir 50% de probabilité de réutiliser un même IVs. En creusant un peu, je suis tombé sur un problème mathématique bien connu : le paradoxe des anniversaires.

Le paradoxe des anniversaires stipule que dans un groupe de n personnes, la probabilité que deux personnes partagent le même anniversaire est donnée par la formule suivante :

\( P(n) \approx 1 - e^{-\frac{n^2}{2N}} \)

N est le nombre total de jours possibles dans une année (dans notre cas, le nombre total d'IV possibles 🥱), n est le nombre de personnes (dans notre cas, le nombre d'IV générés) et P(n) est la probabilité de collision (répétition).

Dans le cas du WEP, un IV est généralement de 24 bits, donc N = 2^{24}.

Nous voulons trouver n tel que P(n) = 0.5.

En remplaçant P(n) par 0.5 et N par 2^{24} dans la formule, nous avons :

\( 0.5 \approx 1 - e^{-\frac{n^2}{2 \cdot 2^{24}}} \)

Nous résolvons pour n :

\( 0.5 = 1 - e^{-\frac{n^2}{2 \cdot 2^{24}}} \)
\( e^{-\frac{n^2}{2 \cdot 2^{24}}} = 0.5 \)
En prenant le logarithme des deux côtés, nous obtenons :
\( -\frac{n^2}{2 \cdot 2^{24}} = \ln(0.5) \)
\( \frac{n^2}{2 \cdot 2^{24}} = -\ln(0.5) \)
On sait que \( \ln(0.5) = -\ln(2) \), nous avons donc :
\( \frac{n^2}{2 \cdot 2^{24}} = \ln(2) \)
\( n^2 = 2 \cdot 2^{24} \cdot \ln(2) \)
\( n = \sqrt{2 \cdot 2^{24} \cdot \ln(2)} \)
En calculant cette expression :
\( n = \sqrt{2 \cdot 16,777,216 \cdot 0.693} \)
\( n = \sqrt{23,237,904} \)
\( n \approx 4821 \)

Donc, il faut environ 4821 IV générés pour avoir une probabilité de 50 % de réutiliser le même IV dans l'algorithme de chiffrement WEP, Intéressant 🧐.

Arrêtons à présent toutes ces théories et parlons un peu pratique; j'utilise Kali Linux pour mes tests mais Ubuntu, Mint, Debian ou autre ferait l'affaire.

Étape 1: Préparer votre environnement

Avant de commencer, il faut avoir un modem Wifi de Test, peu importe le modèle, par contre, des équipements récents peuvent ne plus avoir la sécurité WEP applicable. Assurez que c'est pas le cas et activer la !

Installer Wifite 

  • Assurez-vous que Wifite est installé sur votre machine. Vous pouvez l'installer en utilisant les commandes suivantes :
$ sudo apt-get update
$ sudo apt-get install wifite

Installer les dépendances 

  • Installez également aircrack-ng et macchanger si ce n'est pas déjà fait :
$ sudo apt-get install aircrack-ng macchanger

Activer le mode monitor de l'interface Wifi :

  • Utilisez airmon-ng pour activer le mode monitor sur votre interface Wi-Fi :
$ sudo airmon-ng start wlan0


Étape 2: Lancer Wifite

Lancer Wifite :

  • Exécutez Wifite avec les privilèges root :
$ sudo wifite
  • Wifite va scanner les réseaux sans fil disponibles et afficher une liste; vous trouverez votre réseau de test (dans mon cas c'est MdrisssWifi).



Attaque FMS (Fluhrer, Mantin, Shamir) sur RC4

RC4 est connu depuis des années pour être vulnérable à des attaques de type texte déchiffré connu. Ce type d’attaque consiste à deviner la clé sécrète en s’appuyant sur la connaissance de tout ou en partie des données de la version déchiffrée. La technique d’attaque FMS a demontré qu’il fallait 1 000 000 paquets pour casser une clé de 128 bits et 300 000 pour une clé de 64 bits.

Attaque par modification de paquet

La manière d’utiliser un checksum pour assurer la l’intégrité d’un paquet crée une vulnérabilité potentielle dans le protocole WEP. Le WEP utilise une fonction linéaire pour calculer ce checksum, il est possible de modifier le contenu d’un paquet (et de son checksum) sans aucune détection possible de la part du récepteur. Cette attaque est également connu sous le nom de Bit flipping attaque, une variante consistant simplement à déplacer les bits.


Autres points négatifs du WEP

  • Il ne propose pas de méthode d’authentification efficace, ni de méthode automatique de renouvellement de clé de chiffrement.
  • Il s’appuie sur l’algorithme de chiffrement RC4 et l’utilise de manière peu sécurisée surtout pendant l’initialisation.
  • Il ne propose pas de séparation cryptographique entre les utilisateurs d’un même point d’accès.


Conclusion

Bien que le WEP ait marqué un chapitre fondamental dans l'histoire des réseaux WiFi sécurisés, ses failles ont aussi été une leçon précieuse. Elles ont stimulé une recherche continue et un développement de normes de sécurité plus rigoureuses, garantissant que chaque avancée technologique en matière de connectivité WiFi est accompagnée d'une protection adéquate contre les menaces numériques. Aujourd'hui, alors que nous explorons les avancements vers un WiFi plus sécurisé avec WPA, WPA2, WPA3 et au-delà, nous honorons également les défis surmontés et les leçons apprises à travers l'épopée du WEP.

Cet article marque le début d'un voyage dans le monde des la sécurité Wifi, abonnez-vous à la Newsletter pour suivre l'aventure 🙌.